package top.vanchor.flexible.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 
 * </p>
 *
 * @author Ding
 * @since 2022-01-27
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BackAdmin implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 管理员id
     */
    @JsonProperty("id")
    @TableId(value = "a_id", type = IdType.AUTO)
    private Integer aId;

    /**
     * 登录账号--最高32位
     */
    @JsonProperty("username")
    @TableField("a_username")
    private String aUsername;

    /**
     * 登录密码--6-12位
     */
    @JsonProperty("password")
    @TableField("a_password")
    private String aPassword;

    /**
     * 管理员真实姓名--最高32位
     */
    @JsonProperty("realName")
    @TableField("a_real_name")
    private String aRealName;

    /**
     * 管理员头像
     */
    @JsonProperty("avatar")
    @TableField("a_avatar")
    private Integer aAvatar;

    /**
     * 登录次数
     */
    @JsonProperty("loginNum")
    @TableField("a_login_num")
    private Long aLoginNum;

    /**
     * 最后登录时间戳
     */
    @JsonProperty("lastTime")
    @TableField("a_last_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern ="yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private Date aLastTime;

    /**
     * 最后登录ip地址
     */
    @JsonProperty("lastIp")
    @TableField("a_last_ip")
    private String aLastIp;

    /**
     * 手机号
     */
    @JsonProperty("phone")
    @TableField("a_phone")
    private String aPhone;

    /**
     * 管理员状态：0禁用，1启用
     */
    @JsonProperty("status")
    @TableField("a_status")
    private Integer aStatus;

    /**
     * 管理员角色id
     */
    @JsonProperty("groupId")
    @TableField("a_group_id")
    private Integer aGroupId;

    /**
     * 管理员性别
     */
    @JsonProperty("sex")
    @TableField("a_Sex")
    private Integer aSex;

    /**
     * 管理员个性签名
     */
    @JsonProperty("label")
    @TableField("a_label")
    private String aLabel;

    /**
     * 管理员邮箱地址
     */
    @JsonProperty("email")
    @TableField("a_email")
    private String aEmail;

    /**
     * 管理员创建时间
     */
    @JsonProperty("createTime")
    @TableField("a_create_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern ="yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private Date aCreateTime;

    /**
     * 管理员修改时间
     */
    @JsonProperty("updateTime")
    @TableField("a_update_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern ="yyyy-MM-dd", timezone = "Asia/Shanghai")
    private Date aUpdateTime;

    /**
     * 角色名称
     */
    @JsonProperty("role")
    @TableField(exist = false)
    private String role;

    /**
     * 角色码：超级管理员SUPER_ADMIN，普通管理员ADMIN
     */
    @JsonProperty("roleCode")
    @TableField(exist = false)
    private String roleCode;

    /**
     * 头像地址
     */
    @JsonProperty("avatarUrl")
    @TableField(exist = false)
    private String avatarUrl;

    /**
     * 新密码
     */
    @JsonProperty("newPassword")
    @TableField(exist = false)
    private String newPassword;

}
